您现在的位置:首页 > 学术研究 > 读书笔记 > CListCtrl用法(转)
CListCtrl用法(转)
[发布时间:2007-05-24  阅读次数: 7155]
LV_COLUMN结构.该结构仅用于报告式列表视图,用来描述表项的某一列.要想向表项中插入新的一列,需要用到该结构.LV_COLUMN结构的定义为

typedef struct _LV_COLUMN {

UINT mask; //屏蔽位的组合(见下面括号),表明哪些成员是有效的.

int fmt; /*该列的表头和子项的标题显示格式(LVCF_FMT).可以是LVCFMT_CENTER、LVCFMT_LEFT或LVCFMT_RIGHT*/

int cx; //以像素为单位的列的宽度(LVCF_FMT)

LPTSTR pszText; //指向存放列表头标题正文的缓冲区(LVCF_TEXT)

int cchTextMax; //标题正文缓冲区的长度(LVCF_TEXT)

int iSubItem; //说明该列的索引(LVCF_SUBITEM)

} LV_COLUMN;

LV_ITEM结构.该结构用来描述一个表项或子项,它包含了项的各种属性,其定义为

typedef struct _LV_ITEM {

UINT mask; //屏蔽位的组合(见下面括号),表明哪些成员是有效的

int iItem; //从0开始编号的表项索引(行索引)

int iSubItem; /*从1开始编号的子项索引(列索引),若值为0则说明该成员无效,结构描述的是一个表项而不是子项*/

UINT state; //项的状态(LVIF_STATE)

UINT stateMask; //项的状态屏蔽

LPTSTR pszText; //指向存放项的正文的缓冲区(LVIF_TEXT)

int cchTextMax; //正文缓冲区的长度(LVIF_TEXT)

int iImage; //图标的索引(LVIF_IMAGE)

LPARAM lParam; // 32位的附加数据(LVIF_PARAM)

} LV_ITEM;

其中lParam成员可用来存储与项相关的数据,这在有些情况下是很有用的.state和stateMask的值如表6.28所示,stateMask用来说明要获取或设置哪些状态.

NM_LISTVIEW结构.该结构用于存储列表视图的通知消息的有关信息,大部分列表视图的通知消息都会附带指向该结构的指针.NM_LISTVIEW的定义为

typedef struct tagNM_LISTVIEW {

NMHDR hdr; //标准的NMHDR结构

int iItem; //表项的索引,若为-1则无效

int iSubItem; //子项的索引,若为0则无效

UINT uNewState; //项的新状态

UINT uOldState; //项原来的状态

UINT uChanged; /*取值与LV_ITEM的mask成员相同,用来表明哪些状态发生了变化*/

POINT ptAction; //事件发生时鼠标的客户区坐标

LPARAM lParam; //32位的附加数据

} NM_LISTVIEW;

LV_DISPINFO结构.该结构包含了与项的显示有关的信息,其定义为

typedef struct tagLV_DISPINFO {

NMHDR hdr;

LV_ITEM item;

} LV_DISPINFO;

LV_KEYDOWN结构.该结构包含一些与键盘有关的信息,其定义为

typedef struct tagLV_KEYDOWN {

NMHDR hdr;

WORD wVKey; //虚拟键盘码

UINT flags; //总为0

} LV_KEYDOWN;

CListCtrl类提供了大量的成员函数.在这里,我们结合实际应用来介绍一些常用的函数:

列的插入和删除.在以报告格式显示列表视图时,一般会显示一列表项和多列子项.在初始化列表视图时,先要调用InsertColumn插入各个列,该函数的声明为

int InsertColumn( int nCol, const LV_COLUMN* pColumn );

其中参数nCol是新列的索引,参数pColumn指向一个LV_COLUMN结构,函数根据该结构来创建新的列.若插入成功,函数返回新列的索引,否则返回-1.

要删除某列,应调用DeleteColumn函数,其声明为

BOOL DeleteColumn( int nCol );

表项的插入.要插入新的表项,应调用InsertItem.如果要显示图标,则应该先创建一个CImageList对象并使该对象包含用作显示图标的位图序列.然后调用SetImageList来为列表视图设置位图序列.函数的声明为

int InsertItem( const LV_ITEM* pItem );

参数pItem指向一个LV_ITEM结构,该结构提供了对表项的描述.若插入成功则函数返回新表项的索引,否则返回-1.

CImageList* SetImageList( CImageList* pImageList, int nImageList );

首页上一页下一页尾页当前为1/2页